package com.tms.quartz.service;

import com.tms.domain.Tool;
import org.quartz.SchedulerException;

import java.util.Map;

/**
 * 服务类
 *
 * @author jackie
 * @date 2020年6月30日
 */
public interface QuartzService {

    /**
     * 添加job并与trigger绑定
     * @param tool 需要添加的job
     * @param type 添加的job的类型
     * @param date trigger的循环日期
     * @param map job的参数
     * @return 成功返回true，失败返回false
     * @throws SchedulerException scheduler异常
     */
    boolean addJobToTrigger(Tool tool, int type, int date, Map<String, String> map) throws SchedulerException;

    /**
     * 对job进行操作
     * @param tool job对应的tool
     * @param type tool对应的job类型
     * @param type1 操作类型
     * @return 成功返回true，失败返回false
     * @throws SchedulerException scheduler异常
     */
    boolean handerJob(Tool tool, int type, String type1) throws SchedulerException;

    /**
     * 修改tool对应的触发器的cron表达式
     *
     * @param tool  触发器名称和分组
     * @param cycle 修改的循环天数
     * @return 成功返回true，失败返回false
     * @throws SchedulerException
     */
    boolean changeCycle(Tool tool, int cycle) throws SchedulerException;

    /**
     * 对trigger进行操作
     * @param tool tool，trigger的名称和分组
     * @param type 触发器类型
     * @param type1 操作类型
     * @return 成功返回true，失败返回false
     * @throws SchedulerException scheduler异常
     */
    boolean handerTrigger(Tool tool, int type, String type1) throws SchedulerException;

    /**
     * 启动所有任务
     */
    void startAllJobs();

    /**
     * 关闭所有任务
     */
    void shutdownAllJobs();
}

